Not applicable.
The present invention relates generally to the field of session management, and more particularly to the field of database session management on the Internet, in one embodiment of the present invention.
The Internet, also referred to as a global computer network, or network of computer networks, includes computers connected through a set of communication protocols known as Transmission Control Protocol/Internet Protocol (TCP/IP). One popular component of the Internet is the World Wide Web (WWW), or xe2x80x9cthe web,xe2x80x9d which is a collection of resources on servers on the Internet that utilize a Hypertext Transfer Protocol (HTTP), which is an application protocol that provides users access to those resources (often referred to as xe2x80x9cpages,xe2x80x9d which can be in static or dynamically generated formats, including text, form entry fields, graphics, images, sound, video, etc.) using a Standard Generalized Markup Language (SGML), such as the Hypertext Markup Language (HTML), which is an information management standard for providing platformindependent and application-independent resources that retain formatting, indexing, and- inter-resource hyperlinking information.
One reason for the Internet""s rapid growth is the introduction and widespread use of web browsers, which are HTML-compliant user client software programs, or portions of other programs, providing simple graphical user interface (GUI) access to resources on web servers. The use of an HTML-compliant client, such as a web browser, involves specification of an address via a Uniform Resource Locator (URL). A URL may include reference to a static resource or a reference to a software program on the web server, such as a Common Gateway Interface (CGI) script, as an example, which may interact with a database, or other data source, to dynamically generate the resource requested by the user through the web browser. When a user enters data into fields on a form web page and then submits that data, the browser communicates that data to the web server, as part of or accompanying the URL transmitted from the browser to the web server, which may then be used by a CGI script in interacting with the data source to generate the next resource for the user.
Like many network protocols, HTTP uses a client-server model. An HTTP client, such as a user browser, opens a connection and sends a request message to an HTTP server, such as a web server, which then returns a response message, usually containing the resource that was requested. After delivering the response, the web server closes the connection, which makes HTTP a stateless protocol, i.e. not maintaining any connection information between transactions. In other words, HTTP does not practically provide for maintaining a xe2x80x9csessionxe2x80x9d as a user requests and interacts with various resources. Because of transfer speed limitations of the Internet, users can become frustrated waiting on large resources to slowly download to user browsers. In addition, very large resources can be confusing to many users.
Consequently, designers of web resources tend to break larger resources into multiple smaller resources to speed download times for each of the smaller resources, as well as to present users with resources that are more manageable and understandable. However, since HTTP is a stateless protocol, designers needed to develop a method for conveniently maintaining a session between user interactions with the different resources. One method of addressing this problem has become known as xe2x80x9ccutting a cookiexe2x80x9d on a user""s computer, which often includes the web server reading and writing certain information to a user""s hard drive in files called xe2x80x9ccookies.xe2x80x9d Since many users do not allow such manipulation of their hard drives, and since the amount of data needed in some sessions would make this solution unworkable, the use of cookies does not fully address this problem. Other methods of attempting to efficiently maintain a session include inserting information as hidden form fields or part of the return URL in the resources, or web pages, themselves. As with cookies, some sessions may require more data than would be practical to include in such hidden form fields or URLs. In addition, such methods may expose sensitive data to unauthorized access.
Yet another attempt at effectively solving this problem of efficiently maintaining a session includes using the primary data source used in dynamically generating the resources. In other words, the data source would be accessed every time the web server receives data submitted by a user and one of the many smaller resources is generated. Unfortunately, such a method is often a rather inefficient use of a very busy data source and can lead to higher costs and complexity for data sources supporting web resources. Furthermore, if the data source is not located on the web server, additional delay may be introduced. On the other hand, locating the data source on the web server could create a larger risk of unauthorized access.
There is, therefore, a need for a system for addressing these and other related and unrelated problems.
In addition to other implementations, in an Internet implementation, a session is maintained between an Internet web server and a client browser through the use of at least one temporary cache file, preferably saved in a location local to the web server. The web server also interacts with at least one data source, preferably located behind a firewall from the web server. After a cache file is created, it is used to store data received from the client and from the data source, resulting in fewer interactions with the data source. The cache file is saved from working memory before each page is generated and transmitted from the web server, after which the working memory becomes available for other uses. Since each page includes a reference to the cache file, such as in a hidden form field or in the URL of a hyperlink, for example, the session is effectively maintained between pages when the user interacts with the page to generate data that is transmitted from the client to the web server, at which point the web server opens the referenced cache file.